Multiple-input, multiple-output (MIMO) communication systems provide large increases in throughput due to their ability to support multiple, parallel data streams. These data streams are each transmitted from different spatial transmission layers, which employ either physical or virtual antennas. Generally, MIMO transmissions employ one or more parallel spatial streams that are forward error correction (FEC) encoded employing codewords. Each stream or codeword is then mapped to one or more transmission layers. Mapping of a single encoded stream to multiple layers may be simply achieved by distributing the encoded stream to all available layers. That is, the serial stream from the FEC encoding is converted to parallel streams on different layers. The number of spatial transmission layers employed is called the rank of the transmission.
The number of transmission layers used by a transmission may be any number up to the total number of physical antennas available. A signal on the virtual antennas is typically converted to a signal on the physical antennas by using linear precoding. Linear precoding consists of linearly combining the virtual antenna signals to obtain the actual signals to be transmitted. The effectiveness of a MIMO communication is dependent on the particular set of possible precoders (called a codebook) that may be used in the transmission. Although many current precoding codebooks exist, further improvements would prove beneficial in the art.